分段(范围)专题图 Sample详情

最后更新时间:2019年7月5日

分段专题图又称范围专题图,当需要对事物进行定量绘图时,可以选择使用分段专题图。分段专题图根据每个属性值所在的分段范围赋予相应对象的显示风格,适用于显示分级排序的数据或者具有某种数值变动范围的数据。比如制作行政区划图的分段专题图时,对面积进行分段,每个段用不同颜色来表现各区面积的差异。

1

获取矢量图层

MGSMap *map=[mapView map];
MGSVectorLayer *layer=(MGSVectorLayer *)[map getLayerAtIndex:i];

2

获取图层某一字段属性值,构造分段信息

与单值专题图类似,可利用地图要素查询功能获取选定图层中所有要素的选定属性字段的属性值,作为分段专题图创建的数据来源。由于要对数据进行比较、分段,所以分段专题图只适用于数值型,日期型的数据。

在获取所有要素的某一字段属性值后,需要根据专题图分段的数目、字段值中的最大值、最小值来对属性值进行人为分段,获取每一段的最大值、最小值。

3

创建每一段的几何图形信息

根据当前图层类型创建相应几何图形信息(GeomInfo),在此以区图层为例。

//创建区几何图形信息对象
MGSRegInfo *regInfo=[[MGSRegInfo alloc] init];
[regInfo setFillClr:(int)(1 + (arc4random() % (1500 - 1 + 1)))];  //设置填充颜色(参考当前使用的MapGIS颜色库颜色编号)

4

创建分段专题图绘制信息对象

根据不同分段创建分段专题图信息对象(MGSRangeThemeInfo),设置图形信息、每段开始值与结束值等。

//创建分段专题图信息对象
MGSRangeThemeInfo *rangeThemeInfo=[[MGSRangeThemeInfo alloc] init];
[rangeThemeInfo setGeoInfo:pntInfo];  //为专题图信息设置图形信息
[rangeThemeInfo setIsVisible:YES];    //可见性
[rangeThemeInfo setStartValue:[NSString stringWithFormat:@"%f",minValue+i*d]];      //起始值
[rangeThemeInfo setEndValue:[NSString stringWithFormat:@"%f",minValue+(i+1)*d]];    //终止值

5

创建分段专题图对象

创建分段专题图对象(MGSRangeTheme),设置其分段专题图信息、进行统计的字段表达式及其他信息。

//创建范围专题图对象,并设置其字段表达式,专题图名称以及专题图可见性
MGSRangeTheme *rangeTheme=[[MGSRangeTheme alloc] init];
[rangeTheme setExpression:selectFieldName];
[rangeTheme setName:@"单值专题图"];  //名称
[rangeTheme setVisible:YES];        //可见性

6

显示专题图

获取专题图集合MGSThems,调用其append方法添加专题图。

// 将专题图添加到对应矢量图层上
[[mapLayer themes] append:rangeTheme];
[mapView forceRefresh];

实现效果如下图所示:

分段专题图.jpg